﻿package main

import (
    "fmt"
    "time"
)

func error1(){
    var zero int = 0
    res := 100 / zero
    fmt.Println(res)
}

func error2(){
    // 写一个defer的匿名函数，捕获异常
    defer func() {
        if err := recover(); err != nil {
            fmt.Println(err)
        }
    }()
    var zero int = 0
    res := 100 / zero
    fmt.Println(res)
}


func main() {
    //error1()  // 执行这个函数，直接就报异常退出了
    error2()  // 这里的异常被捕获了，可以正常执行完毕
    // 生产环境里的服务一般是这么做的，永远不会跳出来，一直运行下去
    for {
        error2()
        time.Sleep(time.Second)
    }
}